/**
 * Description:
 * Class Name:ProxyTest
 * Date:2022/5/28 15:16
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第17章_网络编程._17_5_使用代理服务器._17_5_1_直接使用Proxy创建连接;

import java.io.IOException;
import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;

public class ProxyTest {
    final String PROXY_ADDR = "129.82.12.188";
    final int PROXY_PORT = 3124;
    // 定义需要访问的网址
    String urlStr = "http://www.crazyit.org";

    public void init() throws IOException{
        var url = new URL(urlStr);
        // 创建一个代理服务器对象
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_ADDR, PROXY_PORT));
        // 使用指定的代理服务器打开连接
        URLConnection connection = url.openConnection(proxy);
        // 设置超长时间
        connection.setConnectTimeout(3000);

        try (
                // 通过代理服务器读取数据的Scanner
                var scan = new Scanner(connection.getInputStream());
                var ps = new PrintStream("Chapter_17_index.html")
                ){
            while (scan.hasNextLine()){
                String line = scan.nextLine();
                // 在控制台输出网页资源内容
                System.out.println(line);
                // 将网页资源内容输出到指定输出流
                ps.println(line);
            }
        }
    }

    public static void main(String[] args) throws IOException{
        new ProxyTest().init();
    }
}
